package com.fzh.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.fzh.pojo.dto.OrderInfoLinkOrderDetailsDTO;
import com.fzh.pojo.dto.OrderInfoLinkProductAndUserDTO;
import com.fzh.pojo.entity.OrderInfo;

public interface OrderInfoMapper {
	
	/**
	 * 查询出所有订单数据
	 * @param page
	 * @param limit
	 * @param f_uid
	 * @param f_pid
	 * @param status
	 * @return
	 */
	public List<OrderInfo> selectAllOrderInfo(@Param("page")Integer page,@Param("limit")Integer limit,@Param("f_uid")String f_uid,@Param("f_pid")String f_pid,@Param("status")String status);
	
	/**
	 * 查询出订单总条数
	 * @param f_uid
	 * @param f_pid
	 * @param status
	 * @return
	 */
	public int selectOrderInfoCounts(@Param("f_uid")String f_uid,@Param("f_pid")String f_pid,@Param("status")String status);

	/**
	 * 添加一个订单详情
	 * @param orderInfo
	 * @return
	 */
	public Integer insertOrderInfo(OrderInfo orderInfo);

	/**
	 * 修改订单的数据信息根据id
	 * @param orderInfo
	 * @return
	 */
	public Integer updateOrderInfoById(OrderInfo orderInfo);

	/**
	 * 批量删除订单根据ids
	 * @param ids
	 * @return
	 */
	public Integer deleteAllOrderInfoByIds(List<String> ids);
	
	/**
	 * 根据id删除单个的订单
	 * @param id
	 * @return
	 */
	public Integer deleteOrderInfoById(Integer id);

	/**
	 * 修改订单的状态根据id
	 * @param id
	 * @param status
	 * @return
	 */
	public Integer updateOrderInfoStatusById(@Param("id")Integer id, @Param("status")Integer status);

	/**
	 * 查询出商品订单的信息根据id，用于把数据显示到购物车页面input框内
	 * @param id
	 * @return
	 */
	public OrderInfo queryOrderInfoByIdWitchCartInput(Integer id);

	/**
	 * 根据ids来查询出订单列表里面是否存在该商品,用于在订单页面做批量删除操作过滤
	 * @param ids
	 * @return
	 */
	public List<OrderInfo> selectAllOrderInfoByIds(List<String> ids);

	/**
	 * 根据id来查询出订单列表里面是否存在该商品,用于在商品列表做单个删除操作过滤
	 * @param id
	 * @return
	 */
	public OrderInfo selectOrderInfoById(Integer id);

	/**
	 * 查询订单表里数据根据ids
	 * @param ids
	 * @return
	 */
	public List<OrderInfo> selectAllOrderInfoStatusByIds(List<String> ids);

	/**
	 * 查询所有的订单根据用户id，用于在用户管理页面删除操作做出提示，看看该用户是否有订单关联
	 * @param ids
	 * @return
	 */
	public List<OrderInfo> selectAllOrderInfoByF_uids(List<String> ids);

	/**
	 * 批量的进行发货
	 * @return
	 */
	public Integer updateOrderInfoStatusAllIsOne();

	/**
	 * {前台}根据商品ids与用户id进行订单的添加
	 * @param orderInfo
	 * @return
	 */
	public Integer insertOrderInfoByOrderInfos(List<OrderInfo> orderInfo);

	/**
	 * {前台}根据订单号查询出所有的订单信息
	 * @param out_trade_no
	 * @return
	 */
	public List<OrderInfo> selectOrderInfoByOrderId(@Param("orderId")String out_trade_no);

	/**
	 * {前段}根据订单的订单号修改订单状态为已付款
	 * @param out_trade_no
	 */
	public void updateOrderInfoByOrderIdF(String orderId);

	/**
	 * {前端}用户下单后添加订单信息
	 * @param orderInfo
	 * @return
	 */
	public Integer insertOrderInfoByOrderInfoDTOF(OrderInfoLinkProductAndUserDTO orderInfo);
	
	/**
	 * {前段}根据订单的订单号修改订单状态为待评价
	 * @param out_trade_no
	 * @return 
	 */
	public int updateOrderInfoByOrderStatus(String orderId);
	
	/**
	 * {前段}根据订单的订单号修改催单为确认收货
	 * @param out_trade_no
	 * @return 
	 */
	public int updateOrderInfoByOrderStatus1(String orderId);
	
	/**
	 * {前段}根据订单号查询订单详情
	 * @param orderId
	 * @return 
	 */
	public OrderInfoLinkOrderDetailsDTO selectOrderDetailsAll(String orderId);
	
}
